﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;

public partial class uc_admin_UploadUc1 : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("");
        HttpRuntimeSection section = config.GetSection("system.web/httpRuntime") as HttpRuntimeSection;
        maxFileSize = Math.Round(section.MaxRequestLength/1204.0, 1);
    }

    public string m_fileType;

    /// <summary>
    /// Kiểu file
    /// </summary>
    public string ContentFileType
    {
        get { return m_fileType; }
        set
        {
            m_fileType = value;
        }
    }

    public string FileType
    {
        get { return FileUploadControl.PostedFile.ContentType; }
    }
    double maxFileSize;
    bool m_isRename;

    public bool EnableRename
    {
        get { return m_isRename; }
        set { m_isRename = value; }
    }

    string m_name;

    public string FileName
    {
        get { return m_name; }
        set { m_name = value; }
    }

    public bool HasFile
    {
        get { return FileUploadControl.HasFile; }
    }

    string m_saveToDirectory;
    public string SaveToDirectory
    {
        get { return m_saveToDirectory; }
        set
        {
            if (value[0] == '/')
            {
                value = value.Remove(0, 1);
            }
            m_saveToDirectory = Server.MapPath(value);
        }
    }

    bool isComplete = false;
    public bool IsUploadComplete
    {
        get { return isComplete; }
        set { isComplete = value; }
    }

    public string StartUpload()
    {
        if (FileUploadControl.HasFile)
        {
            try
            {
                string v_str_fileName = FileUploadControl.FileName.ToLower();
                if (m_fileType.Contains(v_str_fileName.Substring(v_str_fileName.IndexOf('.') + 1, 3)))
                {
                    if (FileUploadControl.PostedFile.ContentLength < maxFileSize * 1024 * 1024)
                    {
                        // Trường hợp không đổi tên
                        if (EnableRename == false || FileName.Equals(""))
                        {
                            m_name = FileUploadControl.FileName;
                        }
                        FileUploadControl.SaveAs(SaveToDirectory + FileName);
                        isComplete = true;
                        return FileName;
                    }
                    else
                    {
                        isComplete = false;
                        throw new Exception(string.Format("Trạng thái: Dung lượng file phải nhỏ hơn {0} kb!", maxFileSize));
                    }
                }
                else
                {
                    isComplete = false;
                    throw new Exception(string.Format("Trạng thái: Chỉ chấp nhận các định dạng {0}", m_fileType));
                }
            }
            catch (Exception ex)
            {
                isComplete = false;
                throw new Exception("Trạng thái: File không thể upload. Lỗi sau đây đã xẩy ra: " + ex.Message);
            }
        }
        else
        {
            isComplete = false;
            throw new Exception("Trạng thái: Bạn phải chọn 1 file để upload");
        }
    }
}
